package cn.com.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;


public class LogFilter implements Filter {

	private Logger log = Logger.getLogger(LogFilter.class);
	private String filterName;

	@Override
	public void destroy() {
		log.info("关闭Filter:" + filterName);
	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain chain)
			throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) arg0;
		HttpServletResponse response = (HttpServletResponse) arg1;
		long startTime = System.currentTimeMillis();
		String requestURI = request.getRequestURI();
		requestURI = request.getQueryString() == null ? requestURI : (requestURI + "?" + request.getQueryString());// 所有的地址栏参数
		chain.doFilter(request, response);
		long endTime = System.currentTimeMillis();
		log.info(request.getRemoteAddr() + "访问了 " + requestURI + ",总用时 " + (endTime - startTime) + "毫秒。");

	}

	@Override
	public void init(FilterConfig config) throws ServletException {
		filterName = config.getFilterName();
		log.info("启动Filter：" + filterName);
	}

}
